package com.aspose.pdf.examples.AsposePdfExamples.Tables;

import com.aspose.pdf.BorderInfo;
import com.aspose.pdf.BorderSide;
import com.aspose.pdf.Color;
import com.aspose.pdf.ColumnAdjustment;
import com.aspose.pdf.Document;
import com.aspose.pdf.Page;
import com.aspose.pdf.Row;
import com.aspose.pdf.Table;
import com.aspose.pdf.examples.Utils;

public class AddTableInExistingPDFDocument {

	public static void main(String[] args) {
		// The path to the resource directory.
		String dataDir = Utils.getSharedDataDir(AddTableInExistingPDFDocument.class) + "AsposePdfExamples/Tables/";
		
		addTableInExistingPDFDocument(dataDir);
		setAutoFitToWindowPropertyInColumnAdjustmentTypeEnumeration(dataDir);
	}

	public static void addTableInExistingPDFDocument(String dataDir) {
		// Load source PDF document
		Document doc = new Document(dataDir + "input.pdf");
		// Initializes a new instance of the Table
		Table table = new Table();
		// Set the table border color as LightGray
		table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
		// set the border for table cells
		table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
		// create a loop to add 10 rows
		for (int row_count = 1; row_count < 10; row_count++) {
			// add row to table
			Row row = table.getRows().add();
			// add table cells
			row.getCells().add("Column (" + row_count + ", 1)");
			row.getCells().add("Column (" + row_count + ", 2)");
			row.getCells().add("Column (" + row_count + ", 3)");
		}
		// Add table object to first page of input document
		doc.getPages().get_Item(1).getParagraphs().add(table);
		// Save updated document containing table object
		doc.save(dataDir + "document_with_table.pdf");
	}

	public static void setAutoFitToWindowPropertyInColumnAdjustmentTypeEnumeration(String dataDir) {
		//Instantiate the PDF object by calling its empty constructor
		Document doc = new Document();
		//Create the section in the PDF object
		Page page = doc.getPages().add();

		//Instantiate a table object
		Table tab = new Table();
		//Add the table in paragraphs collection of the desired section
		page.getParagraphs().add(tab);

		//Set with column widths of the table
		tab.setColumnWidths("50 50 50");
		tab.setColumnAdjustment(ColumnAdjustment.AutoFitToWindow);

		//Set default cell border using BorderInfo object
		tab.setDefaultCellBorder(new com.aspose.pdf.BorderInfo(com.aspose.pdf.BorderSide.All, 0.1F));

		//Set table border using another customized BorderInfo object
		tab.setBorder(new com.aspose.pdf.BorderInfo(com.aspose.pdf.BorderSide.All, 1F));
		//Create MarginInfo object and set its left, bottom, right and top margins
		com.aspose.pdf.MarginInfo margin = new com.aspose.pdf.MarginInfo();
		margin.setTop(5f);
		margin.setLeft(5f);
		margin.setRight(5f);
		margin.setBottom(5f);

		//Set the default cell padding to the MarginInfo object
		tab.setDefaultCellPadding(margin);

		//Create rows in the table and then cells in the rows
		com.aspose.pdf.Row row1 = tab.getRows().add();
		row1.getCells().add("col1");
		row1.getCells().add("col2");
		row1.getCells().add("col3");
		com.aspose.pdf.Row row2 = tab.getRows().add();
		row2.getCells().add("item1");
		row2.getCells().add("item2");
		row2.getCells().add("item3");

		//Save the PDF
		doc.save(dataDir + "ResultantFile.pdf");
	}

}
